#include <my_head.h>

void *task_func(void *arg){
    // 写在这里更好一些 一定能标记上 不会由于主线程和子线程执行没有先后顺序导致标记不上的情况
    pthread_detach(pthread_self()); // 子线程标记自己为分离态
    printf("我是子线程:[%ld] 10秒后退出\n", pthread_self());
    sleep(10);
    printf("我是子线程:[%ld] 退出\n", pthread_self());
    pthread_exit(NULL);
}

int main(int argc, const char *argv[]){
    pthread_t tid = 0;
    int ret = 0;
    if(0 != (ret = pthread_create(&tid, NULL, task_func, NULL))){
        printf("pthread_create error : [%d] [%s]\n", ret, strerror(ret));
        exit(EXIT_FAILURE);
    }
    // 写在这里也可以 因为实际开发时 一般子线程都会有一些事儿做 不会出现直接退出的子线程 也就是说 一般也能标记成功
    //pthread_detach(tid); // 标记子线程为分离态
    printf("我是主线程:[%ld]\n", pthread_self());
    sleep(100);
    return 0;
}